{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 问题：flask 和 Django 路由映射的区别\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "面试官想从这道题中考察面试人什么？\n",
    "每种框架都有自己的定位，以及优缺点。决定使用什么框架用于新项目，这个问题在新项目开展前期都会进行大量的调研。另外，这道题考验面试者对新技术的敏感性和开放程度。在这个行业，每天都有新的框架冒出来，我们会通过一些论坛，或技术博客去了解新技术动态，去学习新技能，并且参与到一些开源项目。\n",
    "\n",
    "答案\n",
    "这两个框架都允许您将 URL 映射到视图，并支持函数和基于类的视图。\n",
    "\n",
    "在 Django 中， 路由是浏览器访问服务器时，先访问的项目中的 url， 再由项目中的 url 找到应用中 url，然后找到我们的视图函数; 视图函数然后直接或者间接的继承了 Django 提供的父类 View，配置路由时，使用类视图的 as_view() 方法来添加；\n",
    "在 Flask 中，路由是通过装饰器给每个视图函数提供的，而且根据请求方式的不同可以一个 url 用于不同的作用。\n",
    "拓展\n",
    "Django 和 flask 都是基于 Python 的开发 web 应用的框架。我们再看看二者还有哪些相同之处和不同之处。\n",
    "\n",
    "Django：\n",
    "优点：最全能的 web 开发框架，各种功能完备，可维护性高，开发速度快\n",
    "缺点：django orm 跟数据库的交互，django 同步特性导致吞吐量小的问题可以通过 celery 解决\n",
    "\n",
    "flask：\n",
    "优点：自由、灵活，扩展性强，第三方库的选择面广\n",
    "缺点：但是对程序员要求更高\n",
    "\n",
    "有时很难在这两个框架之间进行选择，但两者在许多方面仍然非常相似（许多招聘广告都要求“Django 或 Flask 经验”作为 JD）。因此，如果需要或想要从一个框架切换到另一个框架也不是一件很难的事。\n",
    "\n",
    "另外，现在很多公司面试第一轮就给个小编程项目，里面会指定技术栈，使用何种框架，语言等等。可能你以前使用的是另外一种框架，这就需要你能快速熟悉一个新的框架，在短期完成一个具备各种需求功能的，可运行的代码。这非常考验你的学习能力和编程能力。所以，不要排斥某种框架，不要因为它有一些缺点就不去尝试一下。\n",
    "\n",
    "Tips：如果你碰到此类的面试环节，给你的小项目写一些单元测试，这是加分项。现在很多公式都实践 TDD，敏捷开发。一个好的程序员不光要会能实现功能，也要有验证功能的能力。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}